package com.xjy.rpc.register;

import com.xjy.rpc.bean.BeanDefinition;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * @description: TODO redis注册bean持久化的一系列方法
 * @author XJY
 * @date 2024/10/10 13:47
 * @version 1.0
 */
public interface IRegisterService {

    /**
     * @description: 服务注册
     * @param: beanDefinition
     * @return: void
     * @author XJY
     * @date: 2024/10/10 13:58
     */
    void register(BeanDefinition beanDefinition);

    /**
     * @description: TODO 可传入map进行接口的定制化注册
     * @author XJY
     * @date 2024/10/18 9:13
     * @version 1.0
     */
    void register(BeanDefinition beanDefinition, Map<String,Object> config);

    /**
     * @description: 服务注销 all
     * @param: beanDefinition
     * @return: void
     * @author XJY
     * @date: 2024/10/10 13:59
     */
    void unRegister(String serviceName);


    /**
     * @description: 服务注销 all
     * @param: beanDefinition
     * @return: void
     * @author XJY
     * @date: 2024/10/10 13:59
     */
    void unRegister(String serviceName,String methodName);


    /**
     * @description: 服务发现
     * @param: serviceName
     * @return: java.util.List<com.xjy.rpc.bean.BeanDefinition>
     * @author XJY
     * @date: 2024/10/10 13:59
     */
    List<BeanDefinition> discoveries(String serviceName);


    /**
     * @description: 服务获取 get
     * @param: serviceName
     * @return: com.xjy.rpc.bean.BeanDefinition
     * @author XJY
     * @date: 2024/10/10 13:59
     */
    BeanDefinition discovery(String serviceName,String methodName);

    /**
     * @description: 服务关闭
     * @param:
     * @return: void
     * @author XJY
     * @date: 2024/10/10 14:00
     */
    void destroy();
}
